/*
 *  Copyright 2019-2020 Zheng Jie
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package me.zhengjie.modules.insurance.service.dto;

import lombok.Data;
import java.sql.Timestamp;
import java.util.List;
import me.zhengjie.annotation.Query;

/**
 * @website https://el-admin.vip
 * @author HeHui
 * @date 2022-01-03
 **/
@Data
public class InsuredApplyQueryCriteria{

    /** 不为空 */
    @Query(type = Query.Type.IN, propName = "companyId")
    private List<Long> companyIds;

    /** 不为空 */
    @Query(type = Query.Type.IN, propName = "companySiteId")
    private List<Long> companySiteIds;

    /** 模糊 */
    @Query(type = Query.Type.INNER_LIKE)
    private String siteUserName;

    /** 模糊 */
    @Query(type = Query.Type.INNER_LIKE)
    private String siteUserMobile;

    /** 模糊 */
    @Query(type = Query.Type.INNER_LIKE)
    private String reportNo;

    /** 模糊 */
    @Query(type = Query.Type.INNER_LIKE)
    private String policyNo;

    /** 模糊 */
    @Query(type = Query.Type.INNER_LIKE)
    private String userName;

    /** 模糊 */
    @Query(type = Query.Type.INNER_LIKE)
    private String userMobile;

    /** 模糊 */
    @Query(type = Query.Type.INNER_LIKE)
    private String userIdCard;

    /** 精确 */
    @Query(type = Query.Type.IN, propName = "claimType")
    private List<Integer> claimTypes;

    /** 不为空 */
    @Query(type = Query.Type.IN, propName = "responsibilityId")
    private List<Integer> responsibilityIds;

    /** 精确 */
    @Query
    private Integer additional;

    /** 不为空 */
    @Query(type = Query.Type.IN, propName = "caseSpeek")
    private List<Integer> caseSpeeks;

    @Query(type = Query.Type.IN, propName = "caseStatus")
    private List<Integer> caseStatus;


    /** 不为空 */
    @Query(type = Query.Type.FIND_IN_SET, propName = "accidentTypeIds")
    private List<Integer> accidentTypeIds;

    /** 精确 */
    @Query(type = Query.Type.RIGHT_LIKE)
    private String accidentRegionCode;

    /** 不为空 */
    @Query(type = Query.Type.IN, propName = "responsibleUserId")
    private List<Long> responsibleUserIds;
    /** BETWEEN */
    @Query(type = Query.Type.BETWEEN)
    private List<Timestamp> createTime;
    /** BETWEEN */
    @Query(type = Query.Type.BETWEEN)
    private List<Timestamp> accidentDate;


    private Long lt;

    @Query(type = Query.Type.LESS_THAN, propName = "nextConnectTime")
    private Timestamp ltConnectTime;

    @Query
    private Integer isDeleted = 0;
}